package org.fuys.coder.domain.act.lottery.service.activity;

import org.fuys.coder.common.entity.Pair;
import org.fuys.coder.domain.act.lottery.model.req.act.LotteryActivityAddReq;
import org.fuys.coder.domain.act.lottery.model.req.draw.DrawReq;
import org.fuys.coder.domain.act.lottery.model.res.draw.DrawResult;
import org.fuys.coder.domain.act.lottery.model.vo.activity.LotteryActSupportVO;
import org.fuys.coder.domain.act.lottery.model.vo.activity.LotteryActVO;
import org.fuys.coder.domain.act.support.model.vo.ActRedemptionVO;
import org.fuys.coder.domain.act.support.model.vo.ActVO;
import org.fuys.coder.common.entity.PageDTO;

import java.util.List;

/**
 * @projectName: fuys-low-coder
 * @package: org.fuys.coder.domain.lottery.service.activity
 * @className: ILotteryActivityService
 * @author: WangJing
 * @description: 抽奖活动服务
 * @date: 2024/7/8 23:02
 * @version: 1.0
 */
public interface ILotteryActivityService {
    void addActivity(LotteryActivityAddReq req);

    LotteryActVO getLotteryById(Long actId,Integer state);

    LotteryActSupportVO getLotterySupportVO(Long actId);

    List<ActVO> getCurHotAct(int num);

    Pair<List<ActVO>,Long> getPage(PageDTO pageDTO);

    boolean checkTakeCount(Integer userId,Long actId);

    DrawReq getLotteryStrategyById(Long actId);

    ActRedemptionVO createAwardRedemption(Integer userId,Long actId, DrawResult drawResult);
}
